package com.exampletest.mapper;

import com.exampletest.model.Meeting;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface MeetingMapper {
    // 基础CRUD方法
    int insert(Meeting meeting);

    // 优化：使用动态SQL更新非空字段
    int updateSelective(Meeting meeting);

    int deleteById(Integer id);
    Meeting selectById(Integer id);
    List<Meeting> selectAll();

    // 扩展查询方法
    List<Meeting> searchMeetings(@Param("keyword") String keyword,
                                 @Param("startDate") Date startDate,
                                 @Param("endDate") Date endDate,
                                 @Param("status") Integer status);

    // 审核状态更新方法
    int updateIsApproved(@Param("id") Integer id,
                         @Param("status") Integer status,
                         @Param("approver") String approver,
                         @Param("approvalTime") Date approvalTime);

    // 根据审核状态查询会议
    List<Meeting> selectByIsApproved(@Param("status") Integer status);
    List<Meeting> searchMeetingsWithPage(
            @Param("keyword") String keyword,
            @Param("startDate") Date startDate,
            @Param("endDate") Date endDate,
            @Param("offset") int offset,
            @Param("limit") int limit
    );

    // 新增分页计数方法
    long countMeetings(
            @Param("keyword") String keyword,
            @Param("startDate") Date startDate,
            @Param("endDate") Date endDate
    );
}